﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using vudu.Datos.SqlServer;
using vudu.Logica.Clases;
using vudu.ClasesDominio;

namespace vudu.Pruebas
{
    [TestFixture]
    public class PruebaSqlServerMateria
    {
        SqlServerMateria _conector;
        Materia dePrueba;

        public PruebaSqlServerMateria()
        {
            //cosas
        }

        [SetUp]
        public void Init()
        {
            _conector = new SqlServerMateria();
            dePrueba = new Materia();
        }

        #region Pruebas EnlaceDeDatosMateria Grupo 5
        [Test]
        public void PruebaConsultarMateria()
        {
            dePrueba = _conector.ConsultarMateria("Desarrollo del Software", 1);
            Assert.AreEqual(dePrueba.Nombre, "Desarrollo del Software");
            Assert.IsNotNull(dePrueba);
            dePrueba = _conector.ConsultarMateria("1", 2);
            Assert.IsNotNull(dePrueba);
            Assert.AreEqual(dePrueba.Codigo, 1);
            dePrueba = _conector.ConsultarMateria("0", 2);
            Assert.IsNull(dePrueba);
            dePrueba = _conector.ConsultarMateria("0", 1);
            Assert.IsNull(dePrueba);
        }

        [Test]
        public void PruebaConsultarTodasLasMaterias()
        {
            List<Materia> materias = _conector.ConsultarTodasLasMaterias();
            Assert.True(materias.Count > 0);
        }
        /*
        [Test]
        public void PruebaAgregarMateria()
        {
            Materia materia = new Materia();
            materia.Nombre = "Materia de Prueba";
            materia.Descripcion = "Esta es la materia de prueba";
            materia.Estatus = "Activo";
            materia.HorasTeoria = 4;
            materia.HorasPractica = 2;
            bool seInserto = _conector.AgregarMateria(materia);
            materia = _conector.ConsultarMateria("Materia de Prueba", 1);
            Assert.True(seInserto);
            Assert.IsNotNull(materia);
        }
        */
        [Test]
        public void PruebaEliminarMateria()
        {
            dePrueba.Nombre = "Materia de Prueba";
            dePrueba = new SqlServerMateria().ConsultarMateria(dePrueba.Nombre, 1);
            int respuesta = new SqlServerMateria().EliminarMateria(dePrueba);
            Materia prueba = new SqlServerMateria().ConsultarMateria("Materia de Prueba", 1);
            Assert.AreEqual(respuesta, 1);
            Assert.AreNotEqual(respuesta, 0);
            Assert.AreNotEqual(respuesta, 2);
            Assert.IsNull(prueba);
        }

        [Test]
        public void PruebaModificarMateria()
        {
            dePrueba = new Materia();
            dePrueba.Codigo = 1;
            List<String[]> modificaciones = new List<String[]>();
            String[] nombre = new String[3];
            nombre[1] = "Nombre";
            nombre[2] = "Desarrollo";
            String[] teoria = new String[3];
            teoria[1] = "Teoria";
            teoria[2] = "2";
            String[] practica = new String[3];
            practica[1] = "Practica";
            practica[2] = "2";
            String[] descrip = new String[3];
            descrip[1] = "Descripcion";
            descrip[2] = "te cambie";
            String[] status = new String[3];
            status[1] = "Estatus";
            status[2] = "Activo";

            modificaciones.Add(nombre);
            modificaciones.Add(teoria);
            modificaciones.Add(practica);
            modificaciones.Add(descrip);
            modificaciones.Add(status);

            bool respuesta = new SqlServerMateria().ModificarMateria(modificaciones, dePrueba);
            Materia prueba = new SqlServerMateria().ConsultarMateria("1", 2);
            Assert.True(respuesta);

        }

        #endregion Pruebas EnlaceDeDatosMateria Grupo 5
    }
}